
package com.dstz.form.constants;

import java.util.Set;

import com.dstz.form.util.Util;

/**
 * SQLReport常量
 *
 * @author xianggang
 */
public interface ViewConstants {
	
	/**
	 * 查询参数类型
	 *
	 * @author xianggang
	 */
	public interface SearchParamsType {
		
		/**
		 * sql追加,在sql后面追加where条件
		 */
		public static final int SQL_APPEND = 1;
		
		/**
		 * freemarker变量
		 */
		public static final int FREEMARKER_PARAMS = 2;
	}
	
	/**
	 * 字段操作类型常量
	 *
	 * @author xianggang
	 */
	public interface FieldsOperTypeCode {
		
		/**
		 * 不可添加,页面也不显示
		 */
		public static final int NO_NOTSHOW = 0;
		
		/**
		 * 不可添加,页面显示
		 */
		public static final int NO_SHOW = 1;
		
		/**
		 * 可以添加 , 页面上也显示,可编辑
		 */
		public static final int YES_SHOW = 2;
		
		/**
		 * 可以添加 , 但是页面不显示
		 */
		public static final int YES_NOTSHOW = 3;
		
		/**
		 * 可以添加 , 页面上也显示,但是不可编辑
		 */
		public static final int YES_SHOW_DISABLED = 4;
		
		/**
		 * 不可添加,因为是自增长类型
		 */
		public static final int NO_INCREMENT = 5;
		
		Set<Integer> OPERABLE = Util.set(YES_SHOW, YES_NOTSHOW, YES_SHOW_DISABLED);
		
		Set<Integer> NOTOPERABLE = Util.set(YES_SHOW, YES_NOTSHOW, YES_SHOW_DISABLED, NO_INCREMENT);
		
	}
	
	/**
	 * 流水号ID类型常量
	 *
	 * @author xianggang
	 */
	public interface SqlIdTypeCode {
		
		/**
		 * GUID 1
		 */
		public static final int GUID = 1;
		
		/**
		 * 流水号 2
		 */
		public static final int IDENTITY = 2;
		
		/**
		 * 时间序列 3
		 */
		public static final int TIMEGEN = 3;
	}
	
	/**
	 * 自定义接口请求参数类型常量
	 *
	 * @author xianggang
	 */
	public interface MethodParamsType {
		
		/**
		 * 固定值
		 */
		public static final String NORMOL = "1";
		
		/**
		 * 动态值
		 */
		public static final String AUTO = "2";
		
		/**
		 * 系统变量
		 */
		public static final String SYSTEM_DATA = "3";
		
		/**
		 * 条件字段
		 */
		public static final String PARAM_QUERY = "1";
		
		/**
		 * 需要修改的数据字段
		 */
		public static final String PARAM_UPDATE = "2";
		
	}
	
	/**
	 * 视图的可操作类型常量
	 *
	 * @author xianggang
	 */
	public static interface ViewExcuConstants {
		
		public static String ADD = "1"; // 添加
		
		public static String UPDATA = "2"; // 修改
		
		public static String DEL = "3"; // 删除
		
		public static String BUTTON_METHOD = "4"; // 自定义按钮方法
		
		public static String EXPORT = "5"; // 导出
		
		public static String METHOD = "6"; // 自定义接口方法
		
		public static String SEARCH = "7"; // 查询
		
		public static String SORT = "8"; // 排序
		
		public static String IMPORT = "9"; // 导入
		
	}
	
	/**
	 * 脱敏类型
	 *
	 * @author xianggang
	 */
	public static interface ViewTuoMingConstants {
		
		public static int TUOMING_PHONE = 1; // 手机号脱敏
		
		public static int TUOMING_TEL_PHONE = 2; // 固话脱敏
		
		public static int TUOMING_IDCARD = 3; // 身份证号码脱敏
		
		public static int TUOMING_NAME = 4; // 姓名脱敏
		
		public static int TUOMING_BANKCARD = 5; // 银行卡号脱敏
		
		public static int TUOMING_ADDRESS = 6; // 地址脱敏
		
		public static int TUOMING_QQ = 7; // QQ脱敏
		
		public static int TUOMING_WEIXIN = 8; // 微信脱敏
		
	}
	
	/**
	 * 视图字段赋值类型常量
	 *
	 * @author xianggang
	 */
	public static interface ViewSetDataConstants {
		
		public static String FRONT = "1"; // 前台赋值
		
		public static String BACKGROUND = "2"; // 后台赋值
	}
	
	/**
	 * 视图操作权限类型常量
	 *
	 * @author xianggang
	 */
	public static interface ViewMethodTypeConstants {
		
		public static String METHOD_ADD = "1"; // 新增操作
		
		public static String METHOD_DEL = "2"; // 删除操作
		
		public static String METHOD_UPDATE = "3"; // 修改操作
		
		public static String METHOD_SEARCH = "4"; // 查询操作
		
		public static String RETURN_TYPE_JSON = "1"; // 查询时,返回JSON对象类型
		
		public static String RETURN_TYPE_ARRAY = "2"; // 查询时,返回JSON数组类型
	}
	
	/**
	 * 视图字段赋值类型常量
	 *
	 * @author xianggang
	 */
	public static interface ViewDataTypeConstants {
		
		/**
		 * 绑定值
		 */
		public static String BIND_FIELD = "0";
		
		/**
		 * 固定值
		 */
		public static String DATA_NOMAL = "1";
		
		/**
		 * 当前时间
		 */
		public static String DATA_CUR_DATE = "2";
		
		/**
		 * 当前用户ID
		 */
		public static String DATA_CUR_USER_ID = "3";
		
		/**
		 * 当前用户名
		 */
		public static String DATA_CUR_USER_NAME = "4";
		
		/**
		 * 系统流水号
		 */
		public static String DATA_SYS_LSH = "5";
		
		/**
		 * 随机数字
		 */
		public static String DATA_RANDOM_NUM = "6";
		
		/**
		 * 当前用户组织ID
		 */
		public static String DATA_CUR_USER_DEPT_ID = "7";
		
		/**
		 * 当前用户组织名称
		 */
		public static String DATA_CUR_USER_DEPT_NAME = "8";
		
		/**
		 * 当前职务ID
		 */
		public static String DATA_CUR_USER_POS_ID = "9";
		
		/**
		 * 当前职务名称
		 */
		public static String DATA_CUR_USER_POS_NAME = "10";
		
		/**
		 * 当前用户创建者ID
		 */
		public static String DATA_CUR_USER_CREATERID = "11";
		
		/**
		 * 当前主键Id[添加的时候,多表关联时有用]
		 */
		public static String DATA_CUR_MAIN_TABLE_ID = "12";
		
		/**
		 * 脚本
		 */
		public static String GROOVY_SCRIPT = "13";
		
		/**
		 * 当前环境
		 */
		public static String ENV = "15";
	}
	
	/**
	 * 字段类型常量
	 *
	 * @author xianggang
	 */
	public static interface FieldTypeConstants {
		
		/** 字段类型 普通 */
		String FIELD_TYPE_COMMON = "1";
		
		/** 字段类型 衍伸 */
		String FIELD_TYPE_EXPAND = "2";
		
		/** 字段类型 虚拟列 */
		String FIELD_TYPE_VIR = "3";
	}
	
	/**
	 * 自定义按钮类型常量
	 *
	 * @author xianggang
	 */
	public static interface ViewButtonTypeConstants {
		
		public static String INLINE = "1"; // 行内按钮
		
		public static String GROBLE = "2"; // 全局按钮
		
		public static String HREF = "3"; // HREF
		
		public static String METHOD = "4"; // 事件按钮
		
		public static String DATA_TYPE_NOMAL = "1"; // 固定值
		
		public static String DATA_TYPE_AUTO = "2"; // 动态数据
	}
	
	/**
	 * 自定义sql类型常量
	 *
	 * @author xianggang
	 */
	public static interface SqlTypeConstants {
		
		public static String TYPE_SQL = "1";
		
		public static String TYPE_TABLE = "2";
		
		public static String TYPE__MUTI_TABLE = "3";
		
		public static String TYPE_SQL_TABLE = "4"; // sql表操作
	}
	
	/**
	 * 自定义表类型常量
	 *
	 * @author xianggang
	 */
	public static interface SqlTableTypeConstants {
		
		public static String TABLE_MAIN = "1"; // 主表
		
		public static String TABLE_SUB = "2"; // 子表
		
		public static boolean IS_SUB_TRUE = true;
		
		public static boolean IS_SUB_FALSE = false;
	}
	
	/**
	 * 自定义表类型常量
	 *
	 * @author xianggang
	 */
	public static interface ConditionShowType {
		
		public static Integer SHOW = 1;
		
		public static Integer HIDE = 2;
		
		public static Integer DISABLED = 3;
		
		public static Integer REMOVE = 4;
	}
	
	/**
	 * 查询分组类型
	 * 1:"普通",
	 * 2:"time",// 时间
	 * 3:"自定义" // 即自动追加到group by后面
	 * 
	 * @author xianggang
	 */
	public static interface GroupByType {
		
		/** 1:"普通", **/
		public static int NORMAL = 1;
		
		/** 2:"time",// 时间, **/
		public static int TIME = 2;
		
		/** 3:"自定义" // 即自动追加到group by后面 **/
		public static int CUSTOMER = 3;
		
	}
	
	/**
	 * 数据源来源类型
	 * 
	 * 1:"自定义后台接口",
	 * 2:"临时备份表"
	 * 
	 * @author xianggang
	 */
	public static interface DataFromType {
		
		/** 1:"自定义后台接口", **/
		public static int DATAFROM_INTERFACE = 1;
		
		/** 2:"临时备份表", **/
		public static int DATAFROM_BACKUP = 2;
		
	}
	
	/**
	 * 变量名常量
	 * 
	 * @author xianggang
	 *
	 */
	public static interface ParamNameConstants {
		
		public static String CUR_USERID = "\\$\\{currentUserId\\}"; // 当前用户ID
		
		public static String CUR_CREATERID = "\\$\\{curCreaterId\\}"; // 当前用户的创建者ID
		
		public static String CUR_USERNAME = "\\$\\{currentUserName\\}"; // 当前用户名称

		public static String CUR_PROJECTID = "\\$\\{currentProjectId\\}"; // 当前项目id
		
		public static String CUR_ORG_ID = "\\$\\{currentOrgId\\}"; // 当前用户部门ID
		
		public static String CUR_ORG_NAME = "\\$\\{currentOrgName\\}"; // 当前用户部门名称
		
		public static String CUR_POST_ID = "\\$\\{curPosId\\}"; // 当前职位ID
		
		public static String CUR_POST_NAME = "\\$\\{curPostName\\}"; // 当前职位名称
		
		public static String CUR_DATE = "\\$\\{curDate\\}"; // 当前日期 yyyy-MM-dd
		
		public static String CUR_TIME = "\\$\\{curTime\\}"; // 当前时间 HH:mm:ss
		
		public static String CUR_DATE_TIME = "\\$\\{curDateTime\\}"; // 当前日期+时间 yyyy-MM-dd HH:mm:ss
		
		public static String MAIN_TABLE_ID = "\\$\\{mainTableId\\}"; // 当前日期+时间 yyyy-MM-dd HH:mm:ss
		
		public static String ENV = "\\$\\{env\\}"; // 当前环境变量
		
		public static String MAIN_TABLE_ID_NOMARL = "${mainTableId}"; // 当前日期+时间 yyyy-MM-dd HH:mm:ss
		
	}
	
	/**
	 * 自定义按钮点击事件类型
	 * 
	 * @author xianggang
	 */
	public static interface BtnClickTypeConstants {
		
		/** 0:直接请求 **/
		public static int BTNCLICKTYPE_DIRECT = 0;
		
		/** 1:事件按钮 **/
		public static int BTNCLICKTYPE_EVENT = 1;
		
		/** 2:标签页/tab页 **/
		public static int BTNCLICKTYPE_TAB = 2;
		
		/** 3:普通对话框页 **/
		public static int BTNCLICKTYPE_DIALOG = 3;
		
		/** 4:TOP对话框 **/
		public static int BTNCLICKTYPE_DIALOG_TOP = 4;
		
		/** 5:新页面 **/
		public static int BTNCLICKTYPE_NEW_PAGE = 5;
		
	}
}
